

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <linux/fb.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/ioctl.h>

#include "input_manager.h"
#include <tslib.h>
#include <math.h>





static struct tsdev *g_ts;




 int Devicetouchinit(void)
{
	//阻塞方式
	g_ts = ts_setup(NULL,0);	
	if(g_ts ==NULL)
	{
		printf("ts_setup open error\n");
		return -1;
	}
	return 0;

}
int Devicetouchexit(void)
{
	ts_close(g_ts);
	return 0;

}



static int getinputevent(inputEvent_p inputEventp)
{
	ssize_t ret;

	struct ts_sample samp;
	

	//读取数据到samp_mt
	ret = ts_read(g_ts, &samp,1);

	if (ret < 0) 
	{
		printf("ts_read_mt error\n");
		ts_close(g_ts);
		return -1;
	}
	inputEventp->type =type_touch_event;
	inputEventp->x = samp.x;
	inputEventp->y = samp.y;
	inputEventp->pressure = samp.pressure;
	inputEventp->timevalue = samp.tv;

	return 0;

}


 struct input_Device touchinput = {
 
 	.name = "touch",
	.GetInputEvent=getinputevent,
	.DeviceInit=Devicetouchinit,
	.DeviceExit=Devicetouchexit,


};



void TouchScreenRegsiter(void)
{

//注册input_Device
  RegsiterInput(&touchinput);

}




//int main (int argc, char ** argv)
//{
//	struct inputEvent getinput;
//	int ret ;


	
//	touchinput.DeviceInit();
	
//	while(1)
//	{
//		ret = touchinput.GetInputEvent(&getinput);
//		if(ret)
//		{
//			printf("GetInputEvent err \n");
//			return -1;
//		}
//		else
//		{
//			printf("Type:%x \n",getinput.type);
//			printf("X:%x \n",getinput.x);
//			printf("Y:%x \n",getinput.y);
//			printf("pressure:%x \n",getinput.pressure);
//
//
//
//		}
//
//	}
//
//
//
//
//
//
//
//}





















